#include <REGX52.H>
#include "LCD1602.h"
#include "MatrixKey.h"
#include "Delay.h"

//1、有限位数密码
//int count=0;
//int num=0;
//unsigned int password=0;
//int main()
//{
//    LCD_Init();
//	LCD_ShowString(1,1,"Password:");
//	LCD_ShowNum(2,1,num,4);
//	while(1)
//	{
//		num=MatrixKey();//接受矩阵键盘按键
//		
//		if(num>=0)
//		{
//			password=password*10+num;
//			LCD_ShowNum(2,1,password,4);
//			count++;
//			if(count==4)
//			{
//				if(password==9033)//点击确定
//				{
//					LCD_ShowString(1,12,"right");		
//					password=0;
//					LCD_ShowNum(2,1,password,4);
//				}
//				else
//				{
//					LCD_ShowString(1,12,"error");
//					password=0;
//					LCD_ShowNum(2,1,password,4);
//				}
//				count=0;
//			}
//		}
//		
//		else if(num==-1)//取消输入
//		{
//			password=0;
//			LCD_ShowNum(2,1,password,4);
//			count=0;
//		}
//		
//		else if(num==-2)//-2代表确定
//		{
//			if(password==9033)//点击确定
//			{
//				LCD_ShowString(1,12,"right");		
//				password=0;
//				LCD_ShowNum(2,1,password,4);
//			}
//			else
//			{
//				LCD_ShowString(1,12,"error");
//				password=0;
//				LCD_ShowNum(2,1,password,4);
//			}
//			count=0;
//		}
//		
//		else if(num==-3)//撤销
//		{
//			password=password/10;
//			LCD_ShowNum(2,1,password,4);
//			count--;
//		}
//		
//	}
//	return 0;
//}

//2、无限位数密码
int main()
{
	int password[10]={0};
	int count=0;
	int num=0;
	int local=1;
	int for_i=0;
	
	LCD_Init();
	LCD_ShowString(1,1,"Password:");
	while(1)
	{
		password[local-1]=MatrixKey();//用数组来记录密码
		num=password[local-1];
		if(num>=0)
		{
			LCD_ShowNum(2,local,num,1);
			local++;
		}
		
		else if(num==-1)//取消输入
		{
			for(for_i=0; for_i<10; for_i++)//将密码全部置0
			{
				password[for_i]=0;
			}
			LCD_Init();
			LCD_ShowString(1,1,"Password:");
			local=1;
		}
		
		else if(num==-2)//确认操作
		{
			if(local==7 && password[0]==9 && password[1]==0 && password[2]==3 && password[3]==3 && password[4]==0 && password[5]==8)
			{
				LCD_ShowString(1,12,"right");
			}
			else
			{
				LCD_Init();			
				LCD_ShowString(1,12,"error");
				LCD_ShowString(1,1,"Password:");
				local=1;
			}
		}
		
		else if(num==-3)//撤回一个字符
		{
			password[local-2]=0;//7   5-0
			local--;//6
			LCD_Init();
			LCD_ShowString(1,1,"Password:");
			for(for_i=1; for_i<local;for_i++)
			{
				LCD_ShowNum(2,for_i,password[for_i-1],1);
			}
		}
	}
	return 0;
}